快速排序原理: 从序列“2,3,5,7,9,6,4,1,0,8”两端开始 (1)首先将2作为基准数,应用2个变量i和j分别指向序列左端和右端; (2)首先从j左往右寻找一个小于2的数,i从右往左寻找一个大于2的数; (3)找到了0和3进行第一次交换,继续搜索; (4)1和5进行第二次交换; (5)当i和j都到1数值1时,表明第一轮交换结束,将基准数2和1进行交换,以基准数2为分界点,2的左边都小于等于2,2的右边都大于等于2; (6)2的左边序列为“1,0”,2的右边序列为“7,9,6,4,5,3,8”; (7)最后调用递归分别处理左边序列和右边序列即可。
程序如下:
#include
//序列“2,3,5,7,9,6,4,1,0,8”
void QuickSort(int a[],int left,int right)
{
int i,j,temp,tp;
temp=a[left]; //暂存基准数
i=left; //最左位置
j=right; //最右位置
if(left>right) //递归结束条件
return;
while(i!=j) //当i和j不重合时
{
while(a[j]>=temp && i |